# Contributor: Leo <thinkabit.ukim@gmail.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=bluez
pkgver=5.54
pkgrel=5
pkgdesc="Tools for the Bluetooth protocol stack"
url="http://www.bluez.org/"
arch="all"
license="GPL-2.0-or-later"
depends="dbus"
replaces="udev"
makedepends="dbus-dev libusb-compat-dev eudev-dev json-c-dev
	libical-dev readline-dev glib-dev linux-headers
	autoconf automake libtool ell-dev"
subpackages="
	$pkgname-dev
	$pkgname-doc
	$pkgname-libs
	$pkgname-bccmd
	$pkgname-btmgmt
	$pkgname-btmon
	$pkgname-cups
	$pkgname-deprecated
	$pkgname-hid2hci
	$pkgname-meshctl
	$pkgname-obexd
	$pkgname-zsh-completion:zshcomp:noarch
	"
source="https://www.kernel.org/pub/linux/bluetooth/bluez-$pkgver.tar.xz
	bluetooth.initd
	rfcomm.initd
	rfcomm.confd
	001-bcm43xx-Add-bcm43xx-3wire-variant.patch
	002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch
	003-Increase-firmware-load-timeout-to-30s.patch
	004-Move-the-43xx-firmware-into-lib-firmware.patch
	disable-lock-test.patch
	fix-endianness.patch
	musl.patch
	"

case "$CARCH" in
# crypto tests assume little-endian
mips*)	options="!check";;
esac

# secfixes:
#   5.54-r0:
#     - CVE-2020-0556

build() {
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--localstatedir=/var \
		--libexecdir=/usr/lib \
		--disable-systemd \
		--enable-library \
		--enable-deprecated \
		--enable-mesh
	make
}

check() {
	make check
}

package() {
	make install DESTDIR="$pkgdir"
	install -D -m644 src/main.conf "$pkgdir"/etc/bluetooth/main.conf

	install -Dm755 "$srcdir"/bluetooth.initd "$pkgdir"/etc/init.d/bluetooth
	install -Dm755 "$srcdir"/rfcomm.initd "$pkgdir"/etc/init.d/rfcomm
	install -Dm644 "$srcdir"/rfcomm.confd "$pkgdir"/etc/conf.d/rfcomm

	# Fix shebang for the installed binary
	sed 's|^#!/usr/bin/python$|#!/usr/bin/env python3|g' -i test/simple-agent
	install -Dm755 test/simple-agent "$pkgdir"/usr/bin/bluez-simple-agent
}

bccmd() {
	pkgdesc="Bluez utility for the CSR BCCMD interface"
	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/bccmd "$subpkgdir"/usr/bin/
}

btmgmt() {
	pkgdesc="Bluez tool for the Bluetooth Management API"
	install -Dm755 "$builddir"/tools/btmgmt "$subpkgdir"/usr/bin/btmgmt
}

btmon() {
	pkgdesc="Bluez bluetooth monitor"
	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/btmon "$subpkgdir"/usr/bin/
}

cups() {
	pkgdesc="Bluez backend for CUPS"
	mkdir -p "$subpkgdir"/usr/lib/
	mv "$pkgdir"/usr/lib/cups "$subpkgdir"/usr/lib/
}

hid2hci() {
	pkgdesc="Put HID proxying bluetooth HCI's into HCI mode"
	replaces="bluez"
	mkdir -p "$subpkgdir"
	mv "$pkgdir"/lib "$subpkgdir"/
}

deprecated() {
	pkgdesc="Deprecated bluetooth tools"
	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/ciptool \
		"$builddir"/attrib/gatttool \
		"$pkgdir"/usr/bin/hciattach \
		"$pkgdir"/usr/bin/hciconfig \
		"$pkgdir"/usr/bin/hcidump \
		"$pkgdir"/usr/bin/hcitool \
		"$pkgdir"/usr/bin/rfcomm \
		"$pkgdir"/usr/bin/sdptool \
		"$subpkgdir"/usr/bin/
}

meshctl() {
	pkgdesc="Bluez tool for interacting with bluetooth mesh networks"
	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/meshctl "$subpkgdir"/usr/bin/
}

obexd() {
	pkgdesc="Bluez OBEX daemon"
	mkdir -p "$subpkgdir"/usr/lib/bluetooth
	mv "$pkgdir"/usr/lib/bluetooth/obexd "$subpkgdir"/usr/lib/bluetooth
}

zshcomp() {
	depends=""
	pkgdesc="Zsh compltions for $pkgname"
	install_if="$pkgname=$pkgver-r$pkgrel zsh"

	amove usr/share/zsh/site-functions
}

sha512sums="e19d15d3a478a7af47c1921c8827843492e38787b1182152155bd3d8ad9e1d8ee25c5fda1f24e38c54ebbf946b09fe75007dca9a24d1c35f73303558e558dcbe  bluez-5.54.tar.xz
fc43c78ed248ea412529eed5ae8bb47bacca9bf5b3b10de121ddd4e792c85893561a88be4aa2c6318106e5d2146a721445152d44fa60ca257ca0b4eb87318c1e  bluetooth.initd
8d7b7c8938a2316ce0a855e9bdf1ef8fcdf33d23f4011df828270a088b88b140a19c432e83fef15355d0829e3c86be05b63e7718fef88563254ea239b8dc12ac  rfcomm.initd
a70aa0dbbabe7e29ee81540a6f98bf191a850da55a28f678975635caf34b363cf4d461a801b3484120ee28fdd21240bd456a4f5d706262700924bd2e9a0972fb  rfcomm.confd
73202915fda01d420b2864da77b1c25af5a55c815e9be6546400a0940bfb6097d83322790bc22a80ec0fcd557144fdd1877e243a79285a7f040ff96ba3600b94  001-bcm43xx-Add-bcm43xx-3wire-variant.patch
d5fd1c962bd846eaa6fff879bab85f753eb367d514f82d133b5d3242e1da989af5eddd942c60a87d5b67783e060f91bfa0f74fb1e8e6699cdee6e5bbe6a431ea  002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch
784e9644c8de4e2693e2eeed988a245608b8cb14e1fc0dff8795c60c527b2e8d0c87862cfbfd6b850b47ae80cdf993a5ed3f477078ea1068fd7374899c7a1a77  003-Increase-firmware-load-timeout-to-30s.patch
42ac04044a8c66e07487598b3a75ef52efc32999ebce4e7c63f6198e2f603f4a1442e74600e43a0938cb4f52d4db0298aa99050b18144b84990cda71748e9de5  004-Move-the-43xx-firmware-into-lib-firmware.patch
04c4889372c8e790bb338dde7ffa76dc32fcf7370025c71b9184fcf17fd01ade4a6613d84d648303af3bbc54043ad489f29fc0cd4679ec8c9029dcb846d7e026  disable-lock-test.patch
118d55183860f395fc4bdc93efffb13902ebf7388cad722b9061cd2860d404333e500af521741c3d92c0f8a161f6810348fbeb6682e49c372383f417aed8c76a  fix-endianness.patch
641e425333d269833eed624edec0e29cba04bb0ff6570f6afda178a164fc2bb77456fa88957fe49f36000d3601ac00bb7ba089400977c1577e9c226e74baa3d6  musl.patch"
